<?php

/**
 * @author Anh Nguyen <duyanhnguyen@vccorp.vn>
 * @copyright 2012
 */

class Setting extends MX_Controller
{

    function __construct()
    {
        parent::__construct();
        $this->load->library('Admin_Layout');
        $this->load->library('Form_validation');
        $this->load->model('setting/setting_model');
        $this->form_validation->CI =& $this;
        $this->form_validation->set_error_delimiters('<li>','</li>');
    }
    
    public function banner() {
        $this->mycommon->authAdmin();
        $data = array();
        $data['current'] = 15;
        $data['error'] = '';
        $data['success'] = '';
        $data['headTitle'] = "Thay đổi banner";
        $data['frmToken'] = uniqid();
        $this->load->model('setting/setting_model');
        if ($this->input->post('frmToken') && $this->session->userdata('frmToken') && $this->input->post('frmToken') == $this->session->userdata('frmToken')) {
            $this->form_validation->set_rules('upload', 'File banner', 'required');
            $this->form_validation->set_message('required', '%s không được để trống');
            $file = $this->input->post('upload');
            if ($this->form_validation->run() == TRUE) {
                if ($this->setting_model->setOption('bannerImg', $file)) {
                    $this->mycommon->resetCache(APPPATH . 'cache');
                    $data['success'] = 'Cập nhật thông tin thành công!';
                } else {
                    $data['error'] = 'Có lỗi xảy ra, vui lòng thử lại';
                }
            }
        }
        $data['bannerInfo'] = $this->setting_model->getOptionByName('bannerImg');
        $data['bannerInfo'] = $data['bannerInfo']['value'];
        $this->session->set_userdata('frmToken', $data['frmToken']);
        $this->minifier->AddJsNoPack('ckeditor/ckeditor');
        $this->minifier->AddJsNoPack('ckeditor/adapters/jquery');
        $this->admin_layout->render('setting/edit_banner_view', $data);
    }
    
    public function email()
    {
        $this->updatePost('email', 13, 'Thay đổi Email contact','input');
    }
    
    public function yahoo()
    {
        $this->updatePost('yahoo', 14, 'Thay đổi thông tin giới thiệu','input');
    }
    
    public function guide()
    {
        $this->updatePost('tutorial', 8, 'Thay đổi thông tin hướng dẫn');
    }
    
    public function checkout()
    {
        $this->updatePost('checkout', 9, 'Thay đổi thông tin thanh toán');
    }
    
    public function footer()
    {
        $this->updatePost('footer', 10, 'Thay đổi thông tin footer');
    }
    
    private function updatePost($id, $curr, $headTitle, $type='textarea')
    {
        $this->mycommon->authAdmin();
        $data = array();
        $data['current'] = $curr;
        $data['error'] = '';
        $data['success'] = '';
        $data['headTitle'] = $headTitle;
        $this->load->model('post/post_model');
        $tmpInfo = $this->post_model->getInfoContent($id);
        if ($this->input->post('frmToken') && $this->session->userdata('frmToken') && $this->input->post('frmToken') == $this->session->userdata('frmToken')) {
            $this->form_validation->set_rules('content', 'Nội dung(tiếng việt)', 'required|min_lenght[30]');
            $this->form_validation->set_message('required', '%s không được để trống');
            $this->form_validation->set_message('min_length', '%s phải có ít nhất %d ký tự');
            if ($this->form_validation->run() == TRUE) {
                $array = array(
                    'content'  =>  $this->input->post('content'),
                    'modified'  =>  gmdate('Y-m-d H:i:s', time() + 7*3600)
                );
                if ($this->post_model->updateInfo($id, $array)) {
                    $this->mycommon->resetCache(APPPATH . 'cache');
                    $data['success'] = 'Cập nhật thông tin thành công!';
                } else {
                    $data['error'] = 'Có lỗi xảy ra, vui lòng thử lại';
                }
            }
        }
        $data['postInfo'] = $tmpInfo[0];
        $data['frmToken'] = uniqid();
        $data['type'] = $type;
        $this->session->set_userdata('frmToken', $data['frmToken']);
        $this->minifier->AddJsNoPack('ckeditor/ckeditor');
        $this->minifier->AddJsNoPack('ckeditor/adapters/jquery');
        $this->admin_layout->render('info/edit_info_view', $data);
    }
    
    public function contactView()
    {
        $this->mycommon->authAdmin();
        $data = array();
        $data['current'] = 14;
        $data['error'] = '';
        $data['success'] = '';
        $data['headTitle'] = 'Quản lý thông tin hỗ trợ';
        $this->load->model('setting/setting_model');
        $tmpInfo = $this->setting_model->getOptionByName('contactInfo');
        $tmpInfo = $tmpInfo['value'];
        $tmpInfo = json_decode($tmpInfo);
        $data['postInfo'] = $tmpInfo;
        $data['frmToken'] = uniqid();
        $this->admin_layout->render('setting/contact_view', $data);
    }
    
    public function contactAdd()
    {
        $this->mycommon->authAdmin();
        $data = array();
        $data['current'] = 14;
        $data['error'] = '';
        $data['success'] = '';
        $data['headTitle'] = 'Thêm thông tin hỗ trợ';
        if ($this->input->post('frmToken') && $this->session->userdata('frmToken') && $this->input->post('frmToken') == $this->session->userdata('frmToken')) {
            $this->form_validation->set_rules('name', 'Họ tên', 'required');
            $this->form_validation->set_rules('acc', 'Tên nick', 'required');
            $this->form_validation->set_rules('phone', 'Số điện thoại', 'required');
            $this->form_validation->set_rules('type', 'Loại hỗ trợ', 'required');
            $this->form_validation->set_message('required', '%s không được để trống');
            if ($this->form_validation->run() == TRUE) {
                $name = $this->input->post('name', TRUE);
                $acc = $this->input->post('acc', TRUE);
                $phone = $this->input->post('phone', TRUE);
                $type = $this->input->post('type', TRUE);
                $type = ($type == 'yahoo') ? 'yahoo' : 'skype';
                $array = array(
                    'id'    => uniqid(),
                    'name'  =>  $name,
                    'acc'  =>  $acc,
                    'phone'  =>  $phone,
                    'type'  =>  $type
                );
                $contactInfo = $this->setting_model->getOptionByName('contactInfo');
                $contactInfo = json_decode($contactInfo['value']);
                array_push($contactInfo, $array);
                if ($this->setting_model->setOption('contactInfo', json_encode($contactInfo))) {
                    $this->mycommon->resetCache(APPPATH . 'cache');
                    redirect('admin/setting/contactView');
                } else {
                    $data['error'] = 'Có lỗi xảy ra, vui lòng thử lại';
                }
            }
        }
        $data['frmToken'] = uniqid();
        $this->session->set_userdata('frmToken', $data['frmToken']);
        $this->admin_layout->render('setting/add_contact_view', $data);
    }
    
    public function contactEdit($id) {
        $this->mycommon->authAdmin();
        $data = array();
        $data['current'] = 14;
        $data['error'] = '';
        $data['success'] = '';
        $data['headTitle'] = 'Sửa thông tin hỗ trợ';
        $data['postInfo'] = '';
        $tmpInfo = $this->setting_model->getOptionByName('contactInfo');
        $tmpInfo = json_decode($tmpInfo['value']);
        foreach($tmpInfo as $v) {
            if($id == $v->id) {
                $data['postInfo'] = $v;
            }
        }
        if($data['postInfo'] == '')
            show_404 ();
        if ($this->input->post('frmToken') && $this->session->userdata('frmToken') && $this->input->post('frmToken') == $this->session->userdata('frmToken')) {
            $this->form_validation->set_rules('name', 'Họ tên', 'required');
            $this->form_validation->set_rules('acc', 'Tên nick', 'required');
            $this->form_validation->set_rules('phone', 'Số điện thoại', 'required');
            $this->form_validation->set_rules('type', 'Loại hỗ trợ', 'required');
            $this->form_validation->set_message('required', '%s không được để trống');
            if ($this->form_validation->run() == TRUE) {
                $name = $this->input->post('name', TRUE);
                $acc = $this->input->post('acc', TRUE);
                $phone = $this->input->post('phone', TRUE);
                $type = $this->input->post('type', TRUE);
                $type = ($type == 'yahoo') ? 'yahoo' : 'skype';
                foreach($tmpInfo as $v) {
                    if($id == $v->id) {
                        $v->name = $name;
                        $v->acc = $acc;
                        $v->phone = $phone;
                        $v->type = $type;
                    }
                }
                if ($this->setting_model->setOption('contactInfo', json_encode($tmpInfo))) {
                    $this->mycommon->resetCache(APPPATH . 'cache');
                    $data['success'] = 'Cập nhật thông tin thành công!';
                } else {
                    $data['error'] = 'Có lỗi xảy ra, vui lòng thử lại';
                }
            }
        }
        $data['frmToken'] = uniqid();
        $this->session->set_userdata('frmToken', $data['frmToken']);
        $this->admin_layout->render('setting/edit_contact_view', $data);
    }
    
    public function contactHide($id)
    {
        $this->mycommon->authAdmin();
        $tmpInfo = $this->setting_model->getOptionByName('contactInfo');
        $tmpInfo = json_decode($tmpInfo['value']);
        foreach($tmpInfo as $v) {
            if($id == $v->id) {
                $v->status = 0;
            }
        }
        $this->setting_model->setOption('contactInfo', json_encode($tmpInfo));
        $this->mycommon->resetCache(APPPATH . 'cache');
        redirect('admin/setting/contactView');
    }
    
    public function contactShow($id)
    {
        $this->mycommon->authAdmin();
        $tmpInfo = $this->setting_model->getOptionByName('contactInfo');
        $tmpInfo = json_decode($tmpInfo['value']);
        foreach($tmpInfo as $v) {
            if($id == $v->id) {
                $v->status = 1;
            }
        }
        $this->setting_model->setOption('contactInfo', json_encode($tmpInfo));
        $this->mycommon->resetCache(APPPATH . 'cache');
        redirect('admin/setting/contactView');
    }
    
    public function metaInfo()
    {
        $data = array();
        $data['current'] = 18;
        $data['error'] = '';
        $data['success'] = '';
        $data['headTitle'] = 'Sửa thông tin meta tag';
        $data['frmToken'] = uniqid();
        if ($this->input->post('frmToken') && $this->session->userdata('frmToken') && $this->input->post('frmToken') == $this->session->userdata('frmToken')) {
            $this->form_validation->set_rules('keyword', 'Meta Keyword', 'required');
            $this->form_validation->set_rules('description', 'Meta Description', 'required');
            $this->form_validation->set_message('required', '%s không được để trống');
            if ($this->form_validation->run() == TRUE) {
                $keyword = $this->input->post('keyword', TRUE);
                $description = $this->input->post('description', TRUE);
                if ($this->setting_model->setOption('keywordSeo', $keyword) && $this->setting_model->setOption('descriptionSeo', $description)) {
                    $this->mycommon->resetCache(APPPATH . 'cache');
                    $data['success'] = 'Cập nhật thông tin thành công!';
                } else {
                    $data['error'] = 'Có lỗi xảy ra, vui lòng thử lại';
                }
            }
        }
        $data['keyword'] = $this->setting_model->getOptionByName('keywordSeo');
        $data['keyword'] = $data['keyword']['value'];
        $data['description'] = $this->setting_model->getOptionByName('descriptionSeo');
        $data['description'] = $data['description']['value'];
        $this->session->set_userdata('frmToken', $data['frmToken']);
        $this->admin_layout->render('setting/meta_info_view', $data);
    }
    
    public function gaInfo()
    {
        $data = array();
        $data['current'] = 19;
        $data['error'] = '';
        $data['success'] = '';
        $data['headTitle'] = 'Sửa code Google Analytics';
        $data['frmToken'] = uniqid();
        if ($this->input->post('frmToken') && $this->session->userdata('frmToken') && $this->input->post('frmToken') == $this->session->userdata('frmToken')) {
            $this->form_validation->set_rules('gacode', 'GA Code', 'required');
            $this->form_validation->set_message('required', '%s không được để trống');
            if ($this->form_validation->run() == TRUE) {
                $keyword = $this->input->post('gacode', TRUE);
                if ($this->setting_model->setOption('gaCode', $keyword)) {
                    $this->mycommon->resetCache(APPPATH . 'cache');
                    $data['success'] = 'Cập nhật thông tin thành công!';
                } else {
                    $data['error'] = 'Có lỗi xảy ra, vui lòng thử lại';
                }
            }
        }
        $data['keyword'] = $this->setting_model->getOptionByName('gaCode');
        $data['keyword'] = $data['keyword']['value'];
        $this->session->set_userdata('frmToken', $data['frmToken']);
        $this->admin_layout->render('setting/ga_info_view', $data);
    }

}

?>
